package note_002;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class day12 {
    /**
     * java.util.Map -> 查找表:
     * Map体现的结构是一个多行两列的表格.其中左列称为Key，有列称为value.
     * Map总是成对保存数据，并且总是根据key获取对应的value.
     * Map要求kry不允许重复(equals比较判断key的重复).
     * Map是一个接口，规定了Map的相关操作，常用实现类为:
     * java.util.HashMap:散列表，使用散列表算法实现的Map，当今查询速度最快的数据结构.
     */
    /** HashMap:散列表,查询速度最快*/
    //Map需要同时指定key和value的泛型类型.
//    Map<String,Integer> map = new HashMap();
    /*
      V put(K k,V v)
      将给定的一组键值对存入Map.如鬼使用重复的key存入value则是替换value操作，此时返回值
      为旧的value值，否则为null.
    */
    /*
       V get(Object key)
       根据给定的key获取对应的value，如果给定的key不存在则返回为null
    */
    /**
     * boolean .containsKey(): 如果此映射包含指定键的映射关系，则返回 true。
     * boolean .containsValue():  如果此映射将一个或多个键映射到指定值，则返回 true。
     */
    /*
    num = map.get("体育");
    int size = map.size();
    boolean ck = map.containsKey("生物");
    boolean cv = map.containsValue(95);
    boolean bo = map.isEmpty();//是否为空:
    num = map.remove("物理");//返回删除的value值96
   */
    /**
     * Map的遍历
     * Map支持三种遍历方式:
     * 1:遍历所有的key.----------Set<ket> keySet():
     * 2:遍历所有的value.--------Collection value():
     * 3:遍历每一组键值对.--------Set<Entry> entrySet():------forEach():
     */
//    Map<String,Integer> map = new HashMap<>();
    /** Set<ket> keySet(): 遍历所有的key*/
        /*
            遍历所有的key
            Set<ket> keySet()
            将Map中所以的key存入一个Set集合后将其返回.
         */
//    Set<String> keySet = map.keySet();
//        for(String key : keySet){
//        System.out.println("key:"+key);
//    }
    /** Set<Entry> entrySet(): 遍历每一组键值对*/
        /*
            遍历每一组键值对
            Set<Entry> entrySet()
            将当前Map中每组键值对以一个Entry实例表示并存入Set集合将其返回.
         */
//    Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
//        for(Map.Entry<String,Integer> e : entrySet){
//        String key = e.getKey();
//        Integer Set = e.getValue();
//        System.out.println(key+":"+Set);
//    }
    /** forEach(): 遍历每一组键值对*/
        /*
            Map也支持使用forEach方法遍历键值对
         */
//        map.forEach((k,v)-> System.out.println(k+":"+v));
    /** Collection value(): 遍历所有的value*/
        /*
            遍历所有的value
            Collection value()
            将当前Map中所有的value以一个集合形式返回.
         */
//    Collection<Integer> c = map.values();
//        c.forEach((e)-> System.out.println("value:"+e));
//        c.forEach(System.out::println);




}
